home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Online / hsc / grafflwerk / hscpaltrow.rexx < prev    next >
OS/2 REXX Batch file  |  1997-04-15  |  5KB  |  179 lines

  1. /*
  2.  * hscpaltrow.rexx - access project data using hscpitt
  3.  *
  4.  * $VER: hscpaltrow 1.0 (7.4.97)
  5.  *
  6.  * Copyright 1997 Thomas Aglassinger <agi@giga.or.at>
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  *
  22.  *--------------------------------------------------------------------------
  23.  *
  24.  * USAGE
  25.  *   rx hscpaltrow <project-file>
  26.  *
  27.  * EXAMPLE
  28.  *   rx hscpaltrow hsc.project
  29.  *
  30.  * For more details, please refer to the documentation of hsc, section
  31.  * `project management'
  32.  */
  33.  
  34. /*
  35.  * some values you might want to change
  36.  */
  37.  
  38. /* command to invoke hscpitt */
  39. pittCmd = 'hscpitt'
  40.  
  41. /* temporary file output is redirected to */
  42. tmpFile = 't:paltrow.' || PRAGMA('ID')
  43.  
  44. /* command to delete a file */
  45. deleteCmd = 'delete QUIET'
  46.  
  47. /*
  48.  * debugging support:
  49.  *
  50.  * `debug=1' will enable some SAY commands which tell you
  51.  * what hscpaltrow currently is doing. `dbg' contains a
  52.  * short text which will be used as a prefix by all these
  53.  * SAYs so it is easier to separate from trace output
  54.  */
  55. debug=0
  56. dbg  =':::'
  57.  
  58. /*
  59.  * main program:
  60.  *
  61.  * when changing anything below, you should know, what are
  62.  * you doing
  63.  */
  64.  
  65. /* reset return code */
  66. paltrowRC = 0
  67.  
  68. /* parse user args, display help if necessary */
  69. Parse ARG projectFile
  70.  
  71. IF (projectFile="") THEN DO
  72.     /* show help end exit */
  73.     SAY 'Usage: hscpaltrow <project-file>'
  74.     Exit
  75. END
  76.  
  77.  
  78. /*
  79.  * invoke hscpitt, redirect output to a temporary file
  80.  */
  81. pittCmd = pittCmd 'COMMAND=EXTRACT QUIET PRJFILE=' || projectFile
  82. pittCmd = pittCmd '>' || tmpFile
  83. IF (debug) THEN DO
  84.     SAY dbg 'invoking:' pittCmd
  85. END
  86. Address Command pittCmd
  87. paltrowRC = RC;
  88.  
  89. /*
  90.  * read the temporary file and parse it line-by-line
  91.  *
  92.  * (only of hscpitt returned sucessfull and the temporary
  93.  * file could be found)
  94.  */
  95. IF (paltrowRC = 0) THEN DO
  96.     IF (Open('File', tmpFile, 'R')) THEN DO
  97.  
  98.         DO UNTIL Eof('File')
  99.  
  100.             /* reset variables which will hold the information
  101.              * about a document */
  102.             docName = ""
  103.             docSource = ""
  104.             docIncludes = ""
  105.  
  106.             /* process all lines belonging to a specific document */
  107.             DO UNTIL (Line="")
  108.  
  109.                 /* read next line */
  110.                 Line = ReadLn('File')
  111.                 IF (debug) THEN DO
  112.                     SAY dbg 'line:' Line
  113.                 END
  114.  
  115.                 IF (Line ~= "") THEN DO
  116.  
  117.                     /* extract information from current line:
  118.                      * every line corresponds to the template
  119.                      * <id>="<value>", so everything until
  120.                      * the first "=" is treated as ID, and
  121.                      * the remaining data contain the value,
  122.                      * from which the enclosing quotes are
  123.                      * removed. Usually there should be no need
  124.                      * to modify these two lines */
  125.                     Parse VAR Line LineID '="' LineValue
  126.                     LineValue = LEFT(LineValue, LENGTH(LineValue) - 1)
  127.  
  128.                     /* now act differetly on LineID; you can
  129.                      * add further WHENs here */
  130.                     SELECT
  131.                         WHEN (LineID = 'DOCUMENT') THEN DO
  132.                             docName = LineValue;
  133.                         END
  134.                         WHEN (LineID = 'SOURCE') THEN DO
  135.                             docSource = LineValue;
  136.                         END
  137.                         WHEN (LineID = 'INCLUDE') THEN DO
  138.                             docIncludes = docIncludes LineValue;
  139.                         END
  140.                         OTHERWISE DO
  141.                             IF (debug) THEN
  142.                                 SAY dbg 'ignore:' LineID '=' LineValue
  143.                         END
  144.                     END /* select */
  145.  
  146.                 END /* if line */
  147.             END /* until line */
  148.  
  149.             /* now all information about a specific document
  150.              * has been extracted, and you can do about it
  151.              * whatever you want. This example simply displays
  152.              * it */
  153.             SAY 'Document:' docName
  154.             SAY 'Source  :' docSource
  155.             SAY 'Includes:' || docIncludes
  156.             SAY ''
  157.  
  158.         END /* until eof */
  159.  
  160.         /* close input file */
  161.         Call Close('File')
  162.  
  163.     END /* if open */
  164.     ELSE DO
  165.         SAY 'error opening temporary file "' || tmpFile || '" for input'
  166.         paltrowRC = 10
  167.     END
  168.  
  169.     /* remove temporary file */
  170.     Address Command deleteCmd tmpFile
  171.  
  172. END /* if paltrowRC */
  173. ELSE DO
  174.     /* this part of the code is reached if hscpitt failed */
  175. END
  176.  
  177. Exit paltrowRC
  178.  
  179.